package com.wxy.ej.flow.modules.taskflow.service.nodeExecuteStrategy.strategy.ui;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.rt.easyjava.common.base.Result;
import com.rt.easyjava.common.utils.others.StringUtils;
import com.wxy.ej.flow.modules.taskflow.dto.DataDto;
import com.wxy.ej.flow.modules.taskflow.dto.NodeDto;
import com.wxy.ej.flow.modules.taskflow.service.nodeExecuteStrategy.NodeStrategy;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class UiInParamNodeStrategy extends NodeStrategy {

    @Override
    public Result action(NodeDto node, JSONObject flowDataJson, DataDto dataDto) {
        // 存入数据的变量
        String uiStorageDataMapKeyVar = node.getDefineVarName();
        if (StringUtils.isNull(uiStorageDataMapKeyVar)) {
            return Result.builder();
        }

        // init data
        String initData = node.getDefineVarInitData();

        // 参数变量
        Object uiDataParam = dataDto.getUiInParam();
        if (uiDataParam==null) {
            if (StringUtils.isNull(initData)) {
                return Result.builder().fault("入参为空");
            }
            initData = initData.trim();
            if (initData.charAt(0)=='[') {
                uiDataParam = JSONArray.parseArray(initData);
            }
            else if (initData.charAt(0)=='{') {
                uiDataParam = JSONObject.parseObject(initData);
            }
            else{
                return Result.builder().fault("参数不符合要求");
            }
            // for test
            dataDto.setUiInParam(uiDataParam);
        }

        // 存入数据到任务流
        dataDto.getStorageDataVarMap().put(uiStorageDataMapKeyVar, uiDataParam);

        return Result.builder();
    }
}
